Computer systems have one or more processors that manipulate and control the flow of data by executing instructions. To provide more powerful computer systems, processor designers strive to continually increase the operating speed or frequency of the processor. As processor speed increases, the power consumed by the processor tends to increase as well resulting in higher temperatures within the processor. Moreover, increases in processor frequency and temperature can result in unreliable performance and cause errors to occur within the processor. Various techniques have been developed in an effort to optimally control processor temperature and frequency.
For example, some processors include an on-chip controller that adjusts the power supplied to the processor and the operating frequency of the processor based on a measured temperature of the processor. Thus, the processor can run at a higher operating frequency and, if the processor begins to overheat, the controller can reduce the processor's power and frequency until the processor's temperature falls back into a normal operating range. Therefore, the processor can achieve better performance during periods when its temperature is relatively low yet avoid at least some heat-related errors by throttling back power and frequency when the temperature increases above specified thresholds.
Moreover, the operating temperature and frequency of a processor can change while the processor is running. To ensure robustness, extensive testing of the processor is required. For example, before a processor manufacturer releases a product to consumers, the manufacturer usually tests the processor at many different operating points to ensure that it operates correctly at the different operating points. As used herein, an “operating point” of a processor is defined by an operating frequency and temperature. Thus, if a processor is tested multiple times at the same operating point, then the processor's operating frequency and temperature are the same for each of the tests. However, if a processor is tested at different operating points for each of a set of tests, then the processor has a different operating temperature or frequency for each of the tests.
Despite rigorous testing performed on current processors, it is not feasible to test a processor at all possible operating points for all possible conditions. Moreover, when a processor is shipped to consumers, it is likely that the processor has some bugs that can cause errors under certain conditions. When such a bug is identified, the design of the processor can be altered to compensate for or eliminate the identified bug so that future processors will not generate errors due to the same bug. Unfortunately, processors already manufactured prior to the design change are susceptible to errors caused by the bug.
Under certain circumstances, some bugs in previously manufactured processors can be corrected by implementing firmware or software updates, commonly referred to as “patches.” However, depending on the type of bug at issue and the architecture of an affected processor, remedying some bugs via a patch can be difficult and problematic. If a processor designer is unable to remedy an identified bug via implementation of a patch or otherwise, then the processor can be replaced or, alternatively, allowed to continue operation without remedying the identified bug. Replacing processors having an identified bug can be expensive and burdensome for processor manufacturers, and allowing a processor to continue operation without remedying an identified bug may result in operational errors thereby adversely impacting processor performance.
Moreover, better techniques for remedying identified processor bugs are generally desirable so that potential processor errors can be prevented at a relatively low cost.